Conversation
Documents the plan to register as-lan as a built-in SDK in SDK_CONFIGS, with bare and versioned alias support so users no longer need to inline image/build/test in their service config. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the merge-blocker dependency note: ghcr.io/tomusdrw/jammin-as-lan:0.0.4 is already published and uses an entrypoint symlink so lean npm run build / npm test work without per-build npm install. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bite-sized TDD task breakdown covering SDK_CONFIGS entry, alias map, resolver helper, validator updates, build/test command consumption, create-command template registration, and docs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The interactive create-command flow already offers these three templates, but the docs only listed jam-sdk, jade, and jambrains. Bring the docs in sync with the actual template registry. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tests in bin/cli/ import @fluffylabs/jammin-sdk via package name, which resolves to packages/jammin-sdk/dist/. After SDK source edits, bun run build must run before bun test locally. CI already chains build before test so this only matters during local development. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (14)
📝 WalkthroughWalkthroughThis PR introduces ChangesSDK Registry and CLI Integration
Documentation and Configuration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@bin/cli/src/commands/build-command.test.ts`:
- Line 168: The test is missing awaiting the rejection assertion, which can
cause false positives; update the test that calls callDockerBuild(service,
"/test/project") so the expect(...).rejects.toThrow("Unknown SDK id:
'definitely-not-a-real-sdk'") is prefixed with await (i.e., await
expect(callDockerBuild(...)).rejects.toThrow(...)) to ensure the promise
rejection is actually asserted in the async test.
In `@bin/cli/src/commands/test-command.test.ts`:
- Around line 156-158: The failing test uses .rejects without awaiting and calls
testService twice; change those assertions to await expect(testService(service,
"/test/project")).rejects.toThrow() and await expect(testService(service,
"/test/project")).rejects.toThrow("Tests failed for service 'failing-service'")
(or combine into a single awaited assertion that checks the message) so the
promise is awaited and the duplicate invocation of testService is removed;
update any other occurrences (e.g., the similar assertion near line 168) to use
await expect(...).rejects.toThrow(...) as well.
In `@docs/src/service-examples.md`:
- Around line 89-104: Remove the shell prompt characters from the console code
blocks in docs/src/service-examples.md: replace lines that start with "$ "
inside the three ```console``` blocks (the docker pull, the cd + docker run
build, and the docker run npm test examples) with the same commands but without
the leading "$ " so the blocks contain only the raw commands; ensure each block
remains fenced with ```console``` at start and end and that spacing/newlines are
preserved.
In `@docs/superpowers/plans/2026-04-28-aslan-framework.md`:
- Around line 203-211: The resolveSdkId function uses the `in` operator which
checks the prototype chain and can cause prototype pollution; change its
property checks to use Object.hasOwn to only test own properties on SDK_CONFIGS
and SDK_ALIASES (i.e., replace `id in SDK_CONFIGS` and `id in SDK_ALIASES` with
Object.hasOwn calls) and keep the same return behavior (returning the id cast to
keyof typeof SDK_CONFIGS or resolving via SDK_ALIASES) so callers of
resolveSdkId are unaffected.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: bfddf2c9-0a35-4381-bfef-42918b062745
📒 Files selected for processing (15)
AGENTS.mdbin/cli/src/commands/build-command.test.tsbin/cli/src/commands/build-command.tsbin/cli/src/commands/create-command.tsbin/cli/src/commands/test-command.test.tsbin/cli/src/commands/test-command.tsdocs/src/getting-started.mddocs/src/service-examples.mddocs/superpowers/plans/2026-04-28-aslan-framework.mddocs/superpowers/specs/2026-04-28-aslan-framework-design.mdpackages/jammin-sdk/config/config-validator.test.tspackages/jammin-sdk/config/config-validator.tspackages/jammin-sdk/config/sdk-configs.test.tspackages/jammin-sdk/config/sdk-configs.tspackages/jammin-sdk/config/types/config.ts
- Remove docs/superpowers/ planning artifacts from source control and add the directory to .gitignore. The mdBook user docs under docs/src/ stay tracked. - Await `.rejects.toThrow(...)` calls in build-command.test.ts and test-command.test.ts so async rejections are actually asserted (per CodeRabbit feedback). Combine the duplicate failing-exit-code calls into a single awaited assertion checking the specific error message. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
Summary
jam-sdk,jambrains,jade,ajanta, andjamc3. Users can now writesdk: as-lan(orsdk: as-lan-0.0.4, or canonicalsdk: aslan-0.0.4) injammin.build.ymland jammin auto-resolves the docker image and build/test commands.SDK_ALIASESmap +resolveSdkId(string → canonical key) +resolveSdk(string|object →SdkConfig). Build/test commands now go throughresolveSdkinstead of duplicating the lookup logic in two places.aslanas ajammin create --template aslanchoice scaffolding fromjammin-create/jammin-create-aslan.service-examples.mdandgetting-started.mdso users actually find the new SDK in docs.Design / plan
docs/superpowers/specs/2026-04-28-aslan-framework-design.mddocs/superpowers/plans/2026-04-28-aslan-framework.mdNotes
ghcr.io/tomusdrw/jammin-as-lan:0.0.4. Migrating toghcr.io/fluffylabs/jammin-as-lanis intentionally deferred — see the spec's "Non-goals" section.as-lanalias follows whicheveraslan-X.Y.Zis the current default. Users who want reproducibility should pinas-lan-0.0.4(this is now noted in the docs).Test plan
bun run qacleanbun run buildclean (SDK and CLI both build without TS errors)bun test— 164 pass, 1 skip, 0 fail (added 8 tests intest-command.test.ts, plus alias coverage insdk-configs.test.ts,config-validator.test.ts, andbuild-command.test.ts)validateBuildConfig({ services: [{ path, name, sdk: "as-lan" }] })returns the parsed config withsdk: "as-lan"resolveSdk("as-lan")returns the canonicalaslan-0.0.4config objectjammin create my-aslan-app --template aslanscaffolds correctly (requires the create-aslan template repo, not yet exercised end-to-end in this branch)jammin buildagainst an as-lan service producesservice.jam(requires docker pull and a real as-lan service tree)🤖 Generated with Claude Code